import { Modal } from 'ant-design-vue'
import { defineStore } from 'pinia'
import { ref } from 'vue'

interface ShareModalStoreOptions {
  fromState?: any
  pageForm?: any
  visible?: boolean
  getListApi?: {
    (params?: object, config?: object): any
    path: string
  }
  submit?: (fromState: any) => void
}

export const useShareModalStore = defineStore('ShareModalStore', (options?: ShareModalStoreOptions) => {
  const visible = ref(options?.visible || false)
  const identifier = ref<number>(1)
  let params = {}
  const pageForm = ref({
    limit: 15,
    offset: 1,
    columns: '',
    order: '',
    ...options?.pageForm
  })
  const fromState = ref({
    user: '',
    role: ['A'],
    ...options?.fromState
  })
  const dataList = ref([
    {
      userNum: '11111111111111111111111111',
      userName: '张三',
      role: '使用权限',
      time: '2021-02-22 11:22:33'
    },
    {
      userNum: '2222222222222',
      userName: '李四',
      role: '使用权限、管理权限',
      time: '2021-02-22 11:22:33'
    },
    {
      userNum: '3333333333333',
      userName: '王五',
      role: '使用权限',
      time: '2021-02-22 11:22:33'
    }
    // {
    //   userNum: '4444444444444',
    //   userName: '赵六',
    //   role: '使用权限',
    //   time: '2021-02-22 11:22:33'
    // },
    // {
    //   userNum: '5555555555555',
    //   userName: '钱七',
    //   role: '使用权限',
    //   time: '2021-02-22 11:22:33'
    // },
    // {
    //   userNum: '1111111111111',
    //   userName: '张三',
    //   role: '使用权限',
    //   time: '2021-02-22 11:22:33'
    // },
    // {
    //   userNum: '2222222222222',
    //   userName: '李四',
    //   role: '使用权限、管理权限',
    //   time: '2021-02-22 11:22:33'
    // },
    // {
    //   userNum: '3333333333333',
    //   userName: '王五',
    //   role: '使用权限',
    //   time: '2021-02-22 11:22:33'
    // },
    // {
    //   userNum: '4444444444444',
    //   userName: '赵六',
    //   role: '使用权限',
    //   time: '2021-02-22 11:22:33'
    // },
    // {
    //   userNum: '5555555555555',
    //   userName: '钱七',
    //   role: '使用权限',
    //   time: '2021-02-22 11:22:33'
    // },
    // {
    //   userNum: '1111111111111',
    //   userName: '张三',
    //   role: '使用权限',
    //   time: '2021-02-22 11:22:33'
    // },
    // {
    //   userNum: '2222222222222',
    //   userName: '李四',
    //   role: '使用权限、管理权限',
    //   time: '2021-02-22 11:22:33'
    // },
    // {
    //   userNum: '3333333333333',
    //   userName: '王五',
    //   role: '使用权限',
    //   time: '2021-02-22 11:22:33'
    // },
    // {
    //   userNum: '4444444444444',
    //   userName: '赵六',
    //   role: '使用权限',
    //   time: '2021-02-22 11:22:33'
    // },
    // {
    //   userNum: '5555555555555',
    //   userName: '钱七',
    //   role: '使用权限',
    //   time: '2021-02-22 11:22:33'
    // }
  ])

  const open = (params?: any) => {
    params = params || {}
    visible.value = true
    identifier.value = Date.now()
    console.log(params)
  }

  const close = () => {
    params = {}
    dataList.value = []
    visible.value = false
  }

  const tableChange = (pagination: any, filters: any, sorter: any) => {
    pageForm.value.columns = sorter.field
    pageForm.value.order = sorter.order === 'ascend' ? 'asc' : 'desc'
    console.log(sorter)
  }

  const remove = (item: any) => {
    console.log(item)
  }

  const loadData = async ($state: any) => {
    console.log('请求数据')
    try {
      if (0 < pageForm.value.limit) {
        $state.complete()
      } else {
        pageForm.value.offset++
        $state.loaded()
      }
    } catch (error) {
      $state.error()
    }
  }

  const submit = () => {
    console.log(params, fromState.value)
    const msgList = ['账号已授权', '账号不存在', '账号不支持授权']
    const msg = msgList[0]

    Modal.warning({
      title: msg,
      centered: true,
      okButtonProps: {
        type: 'default'
      },
      onOk: () => {
        console.log('确定')
      }
    })
  }

  return {
    visible,
    pageForm,
    fromState,
    dataList,
    identifier,
    loadData,
    open,
    close,
    tableChange,
    remove,
    submit
  }
})
